package com.nextel.project.usuario.mvc;

import com.nextel.project.Configuracion;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.usuario.ControlUsuario;
import com.nextel.ui.Key;
import com.nextel.ui.OHandset;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OScrollList;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.ODialogListener;
import pe.com.nextel.main.MVCAction;
import javax.microedition.lcdui.Image;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;
import pe.com.nextel.util.StringUtils;

/**
 *
 *
 */
public class MVCSincronizar extends MVCAction implements ODialogListener, OListenerKey {
    
    private OScrollList lstMenu;
    private OSoftKey cmdNull, cmdExit;
    private boolean flagForm;
    int indiceSelection;
    
    protected void createView() {
        
        cmdNull = new OSoftKey(Configuracion.BOTON_SEGUIR);
        cmdExit = new OSoftKey(Configuracion.BOTON_ATRAS);
        
        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SINCRONIZAR), OUILook.PLAIN_SMALL_TITLE);//"Sincronizar"
        
        formulario.addSoftKey(cmdNull);
        formulario.addSoftKey(cmdExit);
    }
    
    protected void createItems() {
        flagForm = true;
        try {
            String[] options = obtenerListaDatos();
            
            Image[] images = new Image[3];
            Image img = Image.createImage("/sincroItem.PNG");
            images[0] = img;
            images[1] = img;
            images[2] = img;
            
            lstMenu = new OScrollList(formulario.getWidth(), formulario.getBodyHeight(),
                    OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
            lstMenu.isWithBorder = false;
            lstMenu.populate(options);
            lstMenu.setImages(images, formulario.getBodyHeight());
            
            lstMenu.listenerKey = this;
            
            formulario.add(lstMenu);
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    
    public String[] obtenerListaDatos() throws Exception {

        String permiso = "1";
        List lista = new ArrayList();

        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_TODO));//"Todo"
        }
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CLIENTE));//"Cliente"
        
        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PRODUCTO)); //"Productos"
        }
       
        String[] datos = new String[lista.size()];

        for (int i = 0; i < lista.size(); i++) {
            datos[i] = (i + 1) + ". " + (String) lista.get(i);

        }

        return datos;

    }
    
    public void performAction(OSoftKey c) {
        if (c == cmdExit) {
            ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu.showScreen());
            destroy();
        } else if (c == cmdNull) {
            performKey(lstMenu.getSelectedIndex() + 1);
        }
    }
    
    
    public void performKey(int indx) {
        if (flagForm) {
            try {
                
                if (indx == Key.Key_OK) {
                    indx = lstMenu.getSelectedIndex() + 1;
                    
                }
                indiceSelection = indx;
                switch (indx) {
                    case 1: //TOTAL
                        if ("1".equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
                            ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_BORRAR_INFORMACION), this, formulario);//"ATENCION: Se borrar\u00E1 toda la informaci\u00F3n guardada en el equipo. \u00BFDesea continuar?"
                            flagForm= true;
                            break;
                        }
                    case 2: //CLIENTES
                        flagForm= true;
                        ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_BORRAR_CLIENTES), this, formulario);// "ATENCION: Se borrar\u00E1n todos los clientes. \u00BFDesea continuar?"
                        break;
                    case 3: //ARICULOS
                        if ("1".equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
                            flagForm= true;
                            ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_BORRAR_PRODUCTOS), this, formulario);//"ATENCION: Se borrar\u00E1n todos los productos. \u00BFDesea continuar?"
                            break;
                        }
                }
                StringUtils.getStaticsMemoria();
            } catch (Exception ex) {
                flagForm = true;
                ex.printStackTrace();
            }
        }
    }
    
    public void botonOK() {
        
        if (flagForm) {
            try {
                switch (indiceSelection) {
                    case 1: //TOTAL
                        if ("1".equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
                            flagForm = true;
                            destroy();
                            ControlPedido.getInstance().enviarPedidoSincronizacion( );
                            break;
                        }
                    case 2: //CLIENTES
                        
                        flagForm = true;
                        destroy();
                        ControlUsuario.getInstance().sincronizar_clientes();
                        break;
                    case 3: //ARTICULOS
                        if ("1".equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
                            flagForm = true;
                            destroy();
                            ControlUsuario.getInstance().sincronizar_productos();
                            break;
                        }
                }
                
            } catch (Exception e) {
                flagForm = true;
                System.out.println("ERROR ENVIO= " + e);
            }
        }
    }
    
    public void botonCancel() {
        OHandset.getDisplay().setCurrent(formulario);
    }
}
